<?php
// +----------------------------------------------------------------------
// | snake
// +----------------------------------------------------------------------
// | Copyright (c) 2016~2022 http://baiyf.cn All rights reserved.
// +----------------------------------------------------------------------
// | Licensed ( http://www.apache.org/licenses/LICENSE-2.0 )
// +----------------------------------------------------------------------
// | Author: NickBai <1902822973@qq.com>
// +----------------------------------------------------------------------
namespace app\admin\model;

use think\Model;
use think\Db;

class ApplyModel extends Model
{
    // 确定链接表名
    protected $table = 'xl_apply';

    /**
     * 根据搜索条件获取用户列表信息
     * @param $where
     * @param $offset
     * @param $limit
     */
    public function getApplyByWhere($id, $offset, $limit)
    {
        if ($id) {
            return Db::name('order')
                ->alias('a')
                ->join('flight b','a.f_id = b.id','LEFT')
                ->join('wx_user c','a.user_id = c.id','LEFT')
                ->field('a.id,a.f_id, a.num,a.create_time,b.trip, b.return_trip, b.trip_time, b.rt_time, b.tr_flight, b.price, b.retr_flight,a.status,c.nickname,c.mobile')
                ->where('a.id', 'eq', $id)
                ->limit($offset, $limit)
                ->order('a.id desc')
                ->select();
        }
        return Db::name('order')
                ->alias('a')
                ->join('flight b','a.f_id = b.id','LEFT')
                ->join('wx_user c','a.user_id = c.id','LEFT')
                ->field('a.id,a.f_id, a.num,a.create_time,b.trip, b.return_trip, b.trip_time, b.rt_time, b.tr_flight, b.price, b.retr_flight,a.status,c.nickname,c.mobile')
                ->limit($offset, $limit)
                ->order('a.id desc')
                ->select();
    }

    /**
     * 根据搜索条件获取用户列表信息
     * @param $where
     * @param $offset
     * @param $limit
     */
    public function getProductByWhere($id, $offset, $limit)
    {
        if ($id) {
            return Db::name('order_product')
                ->alias('a')
                ->join('product b','a.p_id = b.id','LEFT')
                ->join('wx_user c','a.user_id = c.id','LEFT')
                ->field('a.id,a.p_id, a.children_num,a.adult_num,a.status,a.trips_time,a.create_time,b.title, b.type, b.price,c.nickname,c.mobile')
                ->where('a.id', 'eq', $id)
                ->limit($offset, $limit)
                ->order('a.id desc')
                ->select();
        }
        return Db::name('order_product')
            ->alias('a')
            ->join('product b','a.p_id = b.id','LEFT')
            ->join('wx_user c','a.user_id = c.id','LEFT')
            ->field('a.id,a.p_id, a.children_num,a.adult_num,a.status,a.trips_time,a.create_time,b.title, b.type, b.price,c.nickname,c.mobile')
            ->limit($offset, $limit)
            ->order('a.id desc')
            ->select();
    }

    /**
     * 根据搜索条件获取所有的用户数量
     * @param $where
     */
    public function getAllApply($where)
    {
        return Db::name('order')->where($where)->count();
    }

    /**
     * 根据搜索条件获取所有的用户数量
     * @param $where
     */
    public function getAllProduct($where)
    {
        return Db::name('order_product')->where($where)->count();
    }

    /**
     * 插入管理员信息
     * @param $param
     */
    public function insertApply($param)
    {
        try{

            $result =  $this->validate('UserValidate')->save($param);
            if(false === $result){
                // 验证失败 输出错误信息
                return msg(-1, '', $this->getError());
            }else{

                return msg(1, url('user/index'), '添加用户成功');
            }
        }catch(PDOException $e){

            return msg(-2, '', $e->getMessage());
        }
    }

    /**
     * 编辑管理员信息
     * @param $param
     */
    public function editApply($param,$where)
    {
        try{

            $result =  $this->save($param,$where);

            if(false === $result){
                // 验证失败 输出错误信息
                return msg(-1, '', $this->getError());
            }else{

                return msg(1, url('user/index'), '编辑用户成功');
            }
        }catch(PDOException $e){
            return msg(-2, '', $e->getMessage());
        }
    }

    /**
     * 根据管理员id获取角色信息
     * @param $id
     */
    public function getOneApply($id)
    {
        return $this->where('id', $id)->find();
    }

    /**
     * 删除管理员
     * @param $id
     */
    public function delApply($id)
    {
        try{
            Db::name('order')->where('id', $id)->update(['status' =>1]);
            return msg(1, '', '状态修改成功');

        }catch( PDOException $e){
            return msg(-1, '', $e->getMessage());
        }
    }

    /**
     * 删除管理员
     * @param $id
     */
    public function delProduct($id)
    {
        try{
            Db::name('order_product')->where('id', $id)->update(['status' =>1]);
            return msg(1, '', '状态修改成功');

        }catch( PDOException $e){
            return msg(-1, '', $e->getMessage());
        }
    }

    /**
     * 根据用户名获取管理员信息
     * @param $name
     */
    public function findApplyByName($name)
    {
        return $this->where('user_name', $name)->find();
    }

    /**
     * 更新管理员状态
     * @param array $param
     */
    public function updateStatus($param = [], $uid)
    {
        try{

            $this->where('id', $uid)->update($param);
            return msg(1, '', 'ok');
        }catch (\Exception $e){

            return msg(-1, '', $e->getMessage());
        }
    }
}